﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Godot.core
{
    public struct MbDel
    {
        public delegate void Method0();
        public delegate void Method1<P1>(P1 a);
        public delegate void Method2<P1, P2>(P1 a, P2 b);
        public delegate void Method3<P1, P2, P3>(P1 a, P2 b, P3 c);
        public delegate void Method4<P1, P2, P3, P4>(P1 a, P2 b, P3 c, P4 d);
        public delegate void Method5<P1, P2, P3, P4, P5>(P1 a, P2 b, P3 c, P4 d, P5 e);

        public delegate R MethodR0<R>();
        public delegate R MethodR1<R,P1>(P1 a);
        public delegate R MethodR2<R, P1, P2>(P1 a, P2 b);
        public delegate R MethodR3<R, P1, P2, P3>(P1 a, P2 b, P3 c);
        public delegate R MethodR4<R, P1, P2, P3, P4>(P1 a, P2 b, P3 c, P4 d);
        public delegate R MethodR5<R, P1, P2, P3, P4, P5>(P1 a, P2 b, P3 c, P4 d, P5 e);
    }

    public class MethodBindStub : MethodBind
    {
        public override string get_instance_type()
        {
            throw new NotImplementedException();
        }

        public override Variant call(Object p_object, Variant[] p_args, ref Variant.CallError r_error)
        {
            throw new NotImplementedException();
        }
    }
}
